package com.jzo2o.foundations.service;/*
 * ClassName: IServeService
 * Package: com.jzo2o.foundations.service
 * Description:
 * @Author: LaiLai
 * @Create: 6/3/2024 - 下午4:41
 * @Version: V1.0
 */

import com.baomidou.mybatisplus.extension.service.IService;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.foundations.model.domain.Serve;
import com.jzo2o.foundations.model.dto.request.ServePageQueryReqDTO;
import com.jzo2o.foundations.model.dto.request.ServeUpsertReqDTO;
import com.jzo2o.foundations.model.dto.response.ServeResDTO;

import java.math.BigDecimal;
import java.util.List;


public interface IServeService extends IService<Serve> {
    /*
     * @ClassName IServeService
     * @Description: 分页查询服务列表
     * @params servePageQueryReqDTO 查询条件
     * @Return : 分页结果
       @Author : LaiLai
     * @Date : 6/3/2024 下午4:43
     */
    PageResult<ServeResDTO> page(ServePageQueryReqDTO servePageQueryReqDTO);

    /*
     * @ClassName IServeService
     * @Description: 批量增加
     * @params List<ServeUpsertReqDTO> serveUpsertReqDTOList
     * @Return :
       @Author : LaiLai
     * @Date : 6/3/2024 下午11:55
     */
    void batchAdd(List<ServeUpsertReqDTO> serveUpsertReqDTOList);

    /*
     * @ClassName ServeServiceImpl
     * @Description: 根据服务id删除服务
     * @params Long id
     * @Return :
       @Author : LaiLai
     * @Date : 6/3/2024 下午11:34
     */
    void deleteById(Long id);

    /*
     * @ClassName ServeServiceImpl
     * @Description: 根据服务id，价格，对服务价格行修改
     * @params Long id, BigDecimal price
     * @Return :
       @Author : LaiLai
     * @Date : 6/3/2024 下午11:34
     */
    Serve update(Long id, BigDecimal price);

    /*
     * @ClassName IServeService
     * @Description: 根据服务id,对服务进行上架
     * @params Long id
     * @Return :
       @Author : LaiLai
     * @Date : 6/3/2024 下午11:57
     */
    Serve onSale(Long id);

    Serve offSale(Long id);

    Serve onHot(Long id);

    Serve offHot(Long id);

    /**
     * 根据区域id和售卖状态查询关联服务数量
     *
     * @param regionId   区域id
     * @param saleStatus 售卖状态，0：草稿，1下架，2上架。可传null，即查询所有状态
     * @return 服务数量
     */
    int queryServeCountByRegionIdAndSaleStatus(Long regionId, Integer saleStatus);

    /**
     * 根据服务项id和售卖状态查询关联服务数量
     *
     * @param  serveItemId  服务项id
     * @param saleStatus 售卖状态，0：草稿，1下架，2上架。可传null，即查询所有状态
     * @return 服务数量
     */
    int queryServeCountByServeItemIdAndSaleStatus(Long serveItemId, Integer saleStatus);
}


